﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MTP
{
    public class EstadoReversi
    {
        public static int BLANCO = 0;
	    public static int NEGRO = 1;
	    public static int VACIO = -1;
	    public static int EMPATE = -1;
	
	    public int[,] tablero;
	    public int n;
	    public int pt_b;  // numero de piezas blancas en el tablero
	    public int pt_n;  // numero de piezas negras en el tablero
	    public int pd_b;  // numero de piezas blancas disponibles
	    public int pd_n;  // numero de piezas negras disponibles


        public EstadoReversi(int n, int estado_inicial) // n tiene que ser par
        { 
		    if ( n < 4 || n % 2 != 0 ) throw new Exception("n tiene que ser par mayor que 5");

		    this.n = n;
		    this.tablero = new int[n,n];

		    for(int i = 0; i < n; i++)
			    for(int j = 0; j < n; j++)
				    this.tablero[i,j] = VACIO;

		    int k=n/2-1;

		    if ( estado_inicial == 0 ) 
            {
			    this.tablero[k,k] = this.tablero[k+1,k+1] = BLANCO;
			    this.tablero[k,k+1] = this.tablero[k+1,k] = NEGRO;
		    } 
            else if ( estado_inicial == 1 ) 
            {
			    this.tablero[k,k] = this.tablero[k+1,k] = BLANCO;
			    this.tablero[k,k+1] = this.tablero[k+1,k+1] = NEGRO;
		    }
	
		    this.pt_b = this.pt_n = 2;
		    this.pd_b = this.pd_n = (n*n)/2-2;
	    }

	    public EstadoReversi(EstadoReversi t) 
        {
		    this.n = t.n;
		    this.pd_b = t.pd_b;
		    this.pd_n = t.pd_n;
		    this.pt_b = t.pt_b;
		    this.pt_n = t.pt_n;
		    this.tablero = new int[n,n];
		
		    for(int i = 0; i < n; i++)
			    for(int j = 0; j<n; j++)
				    this.tablero[i,j] = t.tablero[i,j];
	    }
    }


}

